package com.niit.session22;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class StreamDemo {
	public static void main(String[] args) {
//		创建一个集合，存储1到100的值，使用Stream API将集合中的偶数筛选出来并且对每个偶数乘以2，最后收集成一个新的集合。
		List<Integer> list = new ArrayList<Integer>();
		for (int i = 1; i <= 100; i++) {
			list.add(i);
		}
		System.out.println(list);
/*************************使用传统方式实现****************************/		
		List<Integer> result = new ArrayList<Integer>();
		for (Integer i : list) {
			if(i%2==0) {
				result.add(i*2);
			}
		}
		System.out.println(result);
		/*************************使用Stream api方式实现****************************/		
//		.stream()方法用于创建一个流，流水线的流
//		.filter可以对流里面的元素进行筛选，接收一个Predicate函数式接口，可以用lambda表达式替代
//		.map可以做映射操作，接收一个Function函数式接口，也可以使用lambda表达式替代
//		.collect(Collectors.toList())将流里的元素收集成一个新的集合
		List<Integer> collect = list.stream().filter(i -> i%2==0).map(i -> i*2).collect(Collectors.toList());
		System.out.println(collect);
//		Java里遍历集合最简单的方式，使用forEach方法和方法引用
		collect.forEach(System.out::println);
//		使用lambda表达式遍历
//		collect.forEach(i -> System.out.println(i));
//		使用传统方式遍历
//		for (Integer i : collect) {
//			System.out.println(i);
//			
//		}
	}

}
